package domain;

import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class Usuario {
	
	private String nombre;
	private String nick;
	private String password;
	private Colecciones usarColecciones;
	private FechaExamenes exam;
	
	public Usuario(String nombre, String nick, String password) {
		super();
		this.nombre = nombre;
		this.nick = nick;
		this.password = password;		
	}	
	
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getNombre() {
		return nombre;
	}
	public String getNick() {
		return nick;
	}
	
	public void addSugerencia(String sesion,String nombre,String asunto,String cuerpo,Date fecha){
		//el usuario va por session
		
		
		Sugerencia nuevaSugerencia=new Sugerencia(asunto,cuerpo,fecha, 0, null);
		usarColecciones.addSugerencia(sesion, nuevaSugerencia);
	}
	
	public void addQueja(String sesion,String nombre,String asunto,String cuerpo,int year, int month, int day){
		//el usuario va por session
		
		
		Queja nuevaQueja=new Queja(asunto,cuerpo,year,month,day);
		usarColecciones.addQueja(sesion, nuevaQueja);
	}
	
	public void addActo(String sesion,String nombre,String asunto,String cuerpo,String lugar,int year, int month, int day){
		//el usuario va por session
		
		
		Acto nuevaActo=new Acto(asunto,cuerpo,lugar,year,month,day);
		usarColecciones.addActo(sesion, nuevaActo);
	}
	
	public void denunciarFecha(Asignatura a){
		if(a==null){
			throw new NullPointerException("Asignatura incorrecta");
		}else{
			Set s=new LinkedHashSet();
			Map<Date, List<Asignatura>> m=exam.getMap();
			s=m.keySet();
			Iterator it=s.iterator();
			while(it.hasNext()){
				Date d=(Date)it.next();
				List<Asignatura> l=m.get(d);
				Iterator it2=l.iterator();
				while(it2.hasNext()){
					Asignatura as=(Asignatura)it2.next();
					if(as.nombreAsignatura.equals(a.nombreAsignatura)){
						exam.getExamenesDenunciados().add(a.nombreAsignatura);	
					}
				}
			}
			
			
			
		}
		
		
	}
	
	
}
